﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CBE.Model.Entities;

namespace CBE.Model
{
    public class AdministrarProveedoresDataAccess : GenericEntityManagerDataAccess<Proveedores, AdministrarProveedoresCriteria, AdministrarProveedoresView, CBEEntities>
    {
        protected override Proveedores ReadEntity(Guid id)
        {
            return ObjectContext.Proveedores.
                Include("Localidades").
                Include("Provincias").
                Include("TiposDocumentos").
                Where(proveedor => proveedor.ID_Proveedor == id).
                FirstOrDefault();
        }

        public override List<AdministrarProveedoresView> Read(AdministrarProveedoresCriteria criteria)
        {
            return ObjectContext.Proveedores.
                Where(proveedor => (String.IsNullOrEmpty(criteria.RazonSocial) || proveedor.RazonSocial.Contains(criteria.RazonSocial)) &&
                                   (String.IsNullOrEmpty(criteria.CuitCuil) || proveedor.NumeroDocumento.Contains(criteria.CuitCuil))).
                Select(proveedor => new AdministrarProveedoresView
                {
                    ID = proveedor.ID_Proveedor,
                    Codigo = proveedor.Codigo,
                    CuitCuil = proveedor.NumeroDocumento,
                    Direccion = proveedor.Calle + " " + proveedor.Numero,
                    NombreContacto = proveedor.NombreContacto,
                    RazonSocial = proveedor.RazonSocial
                }).OrderBy(prov => prov.Codigo).ToList();
        }
    }
}
